Date: Tue, 26 Nov 1996 18:40:32 GMT
Server: NCSA/1.5.1
Last-modified: Wed, 04 Sep 1996 22:11:53 GMT
Content-type: text/html
Content-length: 2740

<html>
<HEAD>
<TITLE>CS 121: Software Development</TITLE>
</HEAD>
<BODY>
<P>
<b><H3><center>
Computer Science 121 <BR>
Software Development <BR>
Syllabus, Fall 1996
</H3> </b> </center>
<P>
<b>Professor:</b>  Wing Tam <BR>
<b>Office:</b> Olin 241 <BR>
<b>Phone:</b> x18768 <BR>
<b>E-mail:</b> <tt>wing@cs.hmc.edu</tt>
<P>

<b><h2>Catalog Description</b></h2>

<P>
Rigorous introduction to the technological and managerial discipline
concerned with the design and implementation of large software systems.
Techniques for software specification, design, verification, and
validation. Formal methods for proving the correctness of programs. Student
teams design, implement, and present a substantial software project. 
Prequisite:Computer Science 60. 3 credit hours.

<P>
<b><h2>Required Textbooks</b></h2>

<P>
<em>Classical & Object-Oriented Software Engineering</em>,by S. Schaqch.
<em>Ada as a second language, 2nd edition</em>, by N. Cohen.

<P>
<b><h2>Syllabus</b></h2>
<ol> 
   <li> Introduction to Software Engineering <br>
        The Software Crisis <br>
        The Classic Development Life Cycle <br> <br>

   <li> Requirement Analysis and Specification <br>
      Data Flow Model <br>
      Data Dictionary <br>
      Requirement Specification <br>
      Formal Specification Techniques <br> <br>

   <li> Software Design Fundamentals<br>
      Architectural vs. Detailed Design<br>
      Module Cohesion and Coupling<br>
      Functional Decomposition<br><br>

   <li> Data Flow-Oriented Design<br>
      Notations<br>
      Transform and Transaction Analysis<br>
      Design Heuristics<br><br>
  
   <li> Object-Oriented Design<br>
      Notations<br>
      Object Attributes and Operations<br>
      Information Hiding<br>
      Software Reusability<br>
      Design Approach<br>
      Implementation of Objects in C++ and Ada<br><br>

   <li> Data Structure-Oriented Design<br>
      Notations<br>
      Input/Ouput Data Structures<br>
      Jackson's Structured Programmming<br><br>

   <li> Software Project Planning<br>
      Project Scheduling and Cost Estimation<br><br>

  <li> Programming Team Structure<br>
      General Principles For Organizing A Team<br>
      Hierarchical Team<br>
      Chief Programmer Team<br>
      Democratic Team<br><br>

   <li> Implementation Issues<br>
      Coding Style and Quality<br>
      Proving the Correctness of Programs<br>
      Derivation of Programs From Specifications<br><br>

  <li> Software Verification and Validation<br>
      Unit Testing<br>
      Integration Testing<br>
      Validation<br><br>
</ol>

<P>
<b><h2>Project</b></h2>

<P>
Besides regular homework and programming assignments, the students are
required to do a major team project.

</BODY>
</htm>





